package api

import (
	"VideoManageSystem/internal/controller"
	"VideoManageSystem/internal/middleware"

	"github.com/gin-gonic/gin"
)

// SetupRoutes 定义并注册所有路由
func SetupRoutes(router *gin.Engine) {
	// 公开路由（无需认证）
	router.POST("/post/login", controller.Login)

	// 受保护的路由组1（需认证）
	protected1 := router.Group("/video")
	protected1.Use(middleware.JWTAuthMiddleware()) // 应用 JWT 验证中间件
	{
		// 视频相关
		// 添加WebSocket路由
		protected1.POST("/uploadVideo", controller.UploadVideoChunk)
		protected1.POST("/deleteVideo", controller.DeleteVideo)
		protected1.GET("/getVideoById", controller.GetVideoById)              // 获取单个视频
		protected1.POST("/getVideoList", controller.GetVideoList)             // 获取视频列表
		protected1.POST("/updateVideoMessage", controller.UpdateVideoMessage) // 更新视频信息
		protected1.GET("/getSimilarVideos", controller.GetSimilarVideos)      // 获取相似视频
	}

	// 受保护的路由组2（需认证）
	protected2 := router.Group("/user")
	protected2.Use(middleware.JWTAuthMiddleware())
	{
		// 用户相关
		protected2.POST("/addUser", controller.AddUser)                     // 添加用户
		protected2.POST("/deleteUser", controller.DeleteUser)               // 删除用户
		protected2.GET("/getUserById", controller.GetUserById)              // 获取单个用户
		protected2.POST("/getUserList", controller.GetUserList)             // 获取用户列表
		protected2.POST("/changePassword", controller.ChangePassword)       // 修改用户密码
		protected2.POST("/updateUserMessage", controller.UpdateUserMessage) // 更新用户信息

		// 部门相关
		protected2.POST("/addDepartment", controller.AddDepartment)         // 添加部门
		protected2.POST("/deleteDepartment", controller.DeleteDepartment)   // 删除部门
		protected2.POST("/getDepartmentList", controller.GetDepartmentList) // 获取部门列表
	}
}
